package com.zenithmind.document.pojo.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 文档分享VO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@Schema(description = "文档分享VO")
public class DocumentShareVO {

    /**
     * 分享ID
     */
    @Schema(description = "分享ID")
    private String id;

    /**
     * 文档ID
     */
    @Schema(description = "文档ID")
    private String documentId;

    /**
     * 文档标题
     */
    @Schema(description = "文档标题")
    private String documentTitle;

    /**
     * 分享码
     */
    @Schema(description = "分享码")
    private String shareCode;

    /**
     * 分享链接
     */
    @Schema(description = "分享链接")
    private String shareUrl;

    /**
     * 分享标题
     */
    @Schema(description = "分享标题")
    private String title;

    /**
     * 分享描述
     */
    @Schema(description = "分享描述")
    private String description;

    /**
     * 分享类型
     */
    @Schema(description = "分享类型")
    private Integer shareType;

    /**
     * 分享类型名称
     */
    @Schema(description = "分享类型名称")
    private String shareTypeName;

    /**
     * 是否有密码保护
     */
    @Schema(description = "是否有密码保护")
    private Boolean hasPassword;

    /**
     * 权限设置
     */
    @Schema(description = "权限设置")
    private Integer permission;

    /**
     * 权限设置名称
     */
    @Schema(description = "权限设置名称")
    private String permissionName;

    /**
     * 过期时间
     */
    @Schema(description = "过期时间")
    private LocalDateTime expireTime;

    /**
     * 是否已过期
     */
    @Schema(description = "是否已过期")
    private Boolean isExpired;

    /**
     * 最大访问次数
     */
    @Schema(description = "最大访问次数")
    private Integer maxAccessCount;

    /**
     * 当前访问次数
     */
    @Schema(description = "当前访问次数")
    private Integer accessCount;

    /**
     * 下载次数
     */
    @Schema(description = "下载次数")
    private Integer downloadCount;

    /**
     * 状态
     */
    @Schema(description = "状态")
    private Integer status;

    /**
     * 状态名称
     */
    @Schema(description = "状态名称")
    private String statusName;

    /**
     * 分享者ID
     */
    @Schema(description = "分享者ID")
    private String sharerId;

    /**
     * 分享者名称
     */
    @Schema(description = "分享者名称")
    private String sharerName;

    /**
     * 最后访问时间
     */
    @Schema(description = "最后访问时间")
    private LocalDateTime lastAccessTime;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    /**
     * 是否可编辑
     */
    @Schema(description = "是否可编辑")
    private Boolean canEdit;

    /**
     * 是否可删除
     */
    @Schema(description = "是否可删除")
    private Boolean canDelete;
}
